package secure;

public class Demo2 {
    // 线程安全
    // 定义一个静态变量 两个线程对其累加 预期结果是2000
    public static Integer count = 0;
    public volatile static Integer count2 = 0;
    public volatile Integer a;
    public void  test2() {
        int a = 0;

    }

    public void test() {
        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 1000; i++){
                synchronized (this){
                    count++;
                }

            }

        });
        Thread t2 = new Thread(() -> {
            for (int i = 0; i < 1000; i++){
                synchronized (this){
                    count++;
                }

            }

        });
        //  启动线程
        t1.start();
        t2.start();
        try {
            // 等待线程执行结束 打印结果
            t1.join();
            t2.join();
            System.out.println(count);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
    public static void main(String[] args) {
        // 创建两个线程 执行累加
//        Object lock = new Object();
//        Thread t1 = new Thread(() -> {
//            for (int i = 0; i < 1000; i++){
//                synchronized (Demo2.class){
//                    count++;
//                }
//
//            }
//
//        });
//        Thread t2 = new Thread(() -> {
//            for (int i = 0; i < 1000; i++){
//                synchronized (Demo2.class){
//                    count++;
//                }
//
//            }
//
//        });
//        //  启动线程
//        t1.start();
//        t2.start();
//        try {
//            // 等待线程执行结束 打印结果
//            t1.join();
//            t2.join();
//            System.out.println(count);
//        } catch (InterruptedException e) {
//            throw new RuntimeException(e);
//        }
        new Demo2().test();
    }
}
